Имя: Пароль:
1C
 
Как програмно заполнить строку с типом план счетов?
0 Aikny
 
naïve
28.08.25
18:53
Доброго времени суток,

Перекопал пол интернета с вопросом, как програмно заполнить строку с типом план счетов, но так и нечего не нашел. Мне нужно чтобы при программной создании реализации он  тч так же указывал два предопределенных поля счет доходов/расходов.
Строка.СчетДоходов = ПланСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
Строка.СчетРасходов = ПланСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");

Заранее спасибо за помощь!
1 Волшебник
 
28.08.25
19:02
Ваш код правильный.

Может Строка не строка?
Может счёт по коду не находится?
2 Aikny
 
naïve
28.08.25
19:04
(1) Да нет вроде перепроверил трижды это строка табличной части услуги. Да и если б это даже была не строка он бы не выдавал ошибку
3 Aikny
 
naïve
28.08.25
19:04
{Octosmart_КорпоративныеСервисы Документ.Octosmart_РаботыПоКлиентам.Форма.ФормаДокумента.Форма(177,30)}: Переменная не определена (ПланСчетов)
                        СтрокаТЧ.СчетДоходов = <<?>>ПланСчетов.Хозрасчетный.НайтиПоКоду("90.01.1"); (Проверка: Сервер)
{Octosmart_КорпоративныеСервисы Документ.Octosmart_РаботыПоКлиентам.Форма.ФормаДокумента.Форма(178,31)}: Переменная не определена (ПланСчетов)
                        СтрокаТЧ.СчетРасходов = <<?>>ПланСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");      (Проверка: Сервер)
{Octosmart_КорпоративныеСервисы Документ.Octosmart_РаботыПоКлиентам.Форма.ФормаДокумента.Форма(177,30)}: Переменная не определена (ПланСчетов)
                        СтрокаТЧ.СчетДоходов = <<?>>ПланСчетов.Хозрасчетный.НайтиПоКоду("90.01.1"); (Проверка: Мобильное приложение-сервер)
{Octosmart_КорпоративныеСервисы Документ.Octosmart_РаботыПоКлиентам.Форма.ФормаДокумента.Форма(178,31)}: Переменная не определена (ПланСчетов)
                        СтрокаТЧ.СчетРасходов = <<?>>ПланСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");      (Проверка: Мобильное приложение-сервер)
4 Волшебник
 
28.08.25
19:06
(3) ПланыСчетов
5 Aikny
 
naïve
28.08.25
19:07
{Octosmart_КорпоративныеСервисы Документ.Octosmart_РаботыПоКлиентам.Форма.ФормаДокумента.Форма(177,30)}: Переменная не определена (ПланыСчетов)
                        СтрокаТЧ.СчетДоходов = <<?>>ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1"); (Проверка: Мобильное приложение-сервер)
{Octosmart_КорпоративныеСервисы Документ.Octosmart_РаботыПоКлиентам.Форма.ФормаДокумента.Форма(178,31)}: Переменная не определена (ПланыСчетов)
                        СтрокаТЧ.СчетРасходов = <<?>>ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");      (Проверка: Мобильное приложение-сервер)
6 Волшебник
 
28.08.25
19:10
Выполняйте код в контексте сервера
7 Aikny
 
naïve
28.08.25
19:13
Процедура выполняется на сервере
8 Волшебник
 
28.08.25
19:14
(7) сказки
9 Aikny
 
naïve
28.08.25
19:15
&НаСервере
Процедура СоздатьРеализацииПоКлиентам()  
Если Объект.АктыСформированны = Ложь Тогда
    ВыборкаКлиентов = Справочники.Octosmart_Клиенты.Выбрать();
    

    
    Пока ВыборкаКлиентов.Следующий() Цикл

        Если Не ЗначениеЗаполнено(ВыборкаКлиентов.ТарифныйПлан) Тогда
            Продолжить;
        КонецЕсли;

    КодСтрока = ВыборкаКлиентов.ТарифныйПлан.Код;
    ПланЧисло = Число(КодСтрока);

        Если (ПланЧисло = 1) Или (ПланЧисло = 2) Тогда
            
            Запрос = Новый Запрос(
            "ВЫБРАТЬ
            |    Сравнения.Клиент КАК Клиент,
            |   Сравнения.Контрагент КАК Контрагент,
            |   Сравнения.Организация КАК Организация
            |ИЗ
            |   Справочник.Octosmart_СравнениеКлиентовИКонтрагентов КАК Сравнения
            |ГДЕ
            |   Сравнения.Клиент = &Клиент");
            Запрос.УстановитьПараметр("Клиент", ВыборкаКлиентов.Ссылка);
            Результат = Запрос.Выполнить().Выбрать();
            
                Пока Результат.Следующий() Цикл  

                    Запрос1 = Новый Запрос;
                    Запрос1.Текст =
                    "ВЫБРАТЬ
                    |    СУММА((ЦЕЛ((Заявки.ДлительностьФакт + 14) / 15) * 15 / 60) * Заявки.СтоимостьВЧас) КАК Сумма
                    |ИЗ
                    |    Документ.Octosmart_Заявки.ЖурналРабот КАК Заявки
                    |ЛЕВОЕ СОЕДИНЕНИЕ
                    |    Справочник.Octosmart_ПользователиSD КАК СпрИнженер
                    |ПО
                    |    Заявки.Инженер = СпрИнженер.Ссылка
                    |ЛЕВОЕ СОЕДИНЕНИЕ
                    |    Документ.Octosmart_ВыставленныеЗаявки КАК ГотЗаявки
                    |ПО
                    |    ГотЗаявки.Номер = Заявки.ссылка.Номер
                    |ГДЕ
                    |    Заявки.Ссылка.Клиент = &Клиент и СпрИнженер.Отдел = &Отдел и ГотЗаявки.Номер IS NULL
                    |    И Заявки.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
                    Запрос1.УстановитьПараметр("Клиент", Результат.Клиент);
                    Запрос1.УстановитьПараметр("НачалоПериода", Объект.ДатаНачалаПериода);
                    Запрос1.УстановитьПараметр("КонецПериода", Объект.ДатаКонцаПериода);                     
                    Запрос1.УстановитьПараметр("Отдел", Объект.Отдел);
                    Результат1 = Запрос1.Выполнить().Выбрать();

                 Если Результат1.Следующий() Тогда  
                     Если ЗначениеЗаполнено(Результат1.Сумма) И Результат1.Сумма > 0 Тогда
                  
                        НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
                        НовыйДок.Дата = Объект.ДатаКонцаПериода;
                        НовыйДок.Организация = Результат.Организация;
                        НовыйДок.Контрагент = Результат.Контрагент;
                        НовыйДок.Склад = Справочники.Склады.НайтиПоКоду("00-000001");
                        НовыйДок.Комментарий = "Акт о выполненых работах";
                        НовыйДок.Ответственный = Пользователи.ТекущийПользователь();

                        СтрокаТЧ = НовыйДок.Услуги.Добавить();
                        СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("БП-00004507");
                        СтрокаТЧ.Количество = 1;
                        СтрокаТЧ.Сумма = Результат1.Сумма;  
                        СтрокаТЧ.цена = Результат1.Сумма;
                        СтрокаТЧ.СтавкаНДС =  Перечисления.СтавкиНДС.БезНДС;
                        СтрокаТЧ.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
                        СтрокаТЧ.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");    
                                                                              
                        НовыйДок.Записать();
                    КонецЕсли;
                 КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
              ЗапросСоздана = Новый Запрос;
        ЗапросСоздана.Текст =
        "ВЫБРАТЬ
        |    Заявки.Номер КАК Ссылка
        |ИЗ
        |    Документ.Octosmart_Заявки КАК Заявки
        |    ЛЕВОЕ СОЕДИНЕНИЕ
        |        Документ.Octosmart_ВыставленныеЗаявки КАК ГотЗаявки
        |        ПО ГотЗаявки.Номер = Заявки.номер
        |ГДЕ
        |    ГотЗаявки.Номер IS NULL
        |    И Заявки.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода";

        ЗапросСоздана.УстановитьПараметр("НачалоПериода", Объект.ДатаНачалаПериода);
        ЗапросСоздана.УстановитьПараметр("КонецПериода", Объект.ДатаКонцаПериода);

        РезультатСоздана = ЗапросСоздана.Выполнить().Выбрать();
            Пока РезультатСоздана.Следующий() Цикл
            Создана = Документы.Octosmart_ВыставленныеЗаявки.СоздатьДокумент();
            Создана.Номер = РезультатСоздана.Ссылка;
            Создана.Дата = ТекущаяДата();
            Создана.Начало = Объект.ДатаНачалаПериода;
            Создана.Конец = Объект.ДатаКонцаПериода;
            Создана.Записать();
        КонецЦикла;

КонецЕсли;    
КонецПроцедуры
10 Aikny
 
naïve
28.08.25
19:17
Реализация спокойно создается без ошибок, без вот этой 2 строчек кода
                        СтрокаТЧ.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
                        СтрокаТЧ.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
12 Timon1405
 
28.08.25
19:18
этих элементов плана счетов "Хозрасчетный" нет в расширении "Octosmart_КорпоративныеСервисы"
13 Волшебник
 
28.08.25
19:19
У вас ошибка в контексте
Проверка: Мобильное приложение-сервер)
14 Aikny
 
naïve
28.08.25
19:25
(12) перенес плана счетов "Хозрасчетный" в расширение, но ничего не поменялось
15 Волшебник
 
28.08.25
19:25
(14) в мобильном приложении планов счетов не бывает
16 Волшебник
 
28.08.25
19:26
Добавьте директивы препроцессора

#Если Сервер Тогда
17 Timon1405
 
28.08.25
19:31
(14) нужно сами элементы отдельно добавить в расширение
18 Aikny
 
naïve
28.08.25
19:35
Помогло спасибо большое!
Закон Брукера: Даже маленькая практика стоит большой теории.