Имя: Пароль:
1C
1С v8
Бух 3.0 В док ОперацияБух заполнить табличную часть
,
0 04347
 
12.05.14
10:14
1С Бух 3.0 (3.0.32.7). Необходимо в документе ОперацияБух заполнить табличную часть, делаю как в Бух 2.0 - не получается. Прошу помочь

&НаСервере
Функция ЗаполнитьОбъект(НовыйОбъект,МОЛ)
    
     ВыборкаОС=ОстаткиОС();
     РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
     РегХозрасчетный.Отбор.Регистратор.Значение = НовыйОбъект.Ссылка;
    
     Для Каждого СтрокаОС Из ВыборкаОС Цикл
        
         НоваяЗапись = РегХозрасчетный.Добавить();
         НоваяЗапись.Период=НовыйОбъект.Дата;
         НоваяЗапись.Регистратор = НовыйОбъект.Ссылка;
                  НоваяЗапись.Организация = НовыйОбъект.Организация;
         НоваяЗапись.Содержание  = "Корректировка стоимости ОС ";
         НоваяЗапись.Сумма  = 1000;

         НоваяЗапись.СчетДт = ПланыСчетов.Хозрасчетный.ОСвОрганизации;
         БухгалтерскийУчет.УстановитьСубконто(НоваяЗапись.СчетДт, НоваяЗапись.СубконтоДт, "ОсновныеСредства", СтрокаОС.Ссылка);
         НоваяЗапись.СчетКт = ПланыСчетов.Хозрасчетный.Вспомогательный;
         сообщить(СтрокаОС.Наименование);
         РегХозрасчетный.Записывать = Истина;
         РегХозрасчетный.Записать();
     КонецЦикла;
    
КонецФункции

&НаСервере

Функция ОстаткиОС()
     Запрос = Новый Запрос();
     Запрос.Текст =
     "ВЫБРАТЬ
     |ОсновныеСредства.Наименование,
     |ОсновныеСредства.Ссылка
     |ИЗ
     |Справочник.ОсновныеСредства КАК ОсновныеСредства ";
    
     Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
1 salvator
 
12.05.14
10:18
1. РегХозрасчетный.Отбор.Регистратор.Установить(НовыйОбъект.Ссылка);
2. Записать() - убрать за пределы цикла
3. Сообщить() на сервере - убрать
2 04347
 
12.05.14
10:27
сделала, все равно не заполняет

Функция ЗаполнитьОбъект(НовыйОбъект,МОЛ)
    
     ВыборкаОС=ОстаткиОС();
     РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
     //РегХозрасчетный.Отбор.Регистратор.Значение = НовыйОбъект.Ссылка;
     РегХозрасчетный.Отбор.Регистратор.Установить(НовыйОбъект.Ссылка);
     Для Каждого СтрокаОС Из ВыборкаОС Цикл
         НоваяЗапись = РегХозрасчетный.Добавить();
         НоваяЗапись.Период=НовыйОбъект.Дата;
         НоваяЗапись.Регистратор = НовыйОбъект.Ссылка;
         НоваяЗапись.Организация = НовыйОбъект.Организация;
         НоваяЗапись.Содержание  = "Корректировка стоимости ОС ";
         НоваяЗапись.Сумма  = 1000;
         НоваяЗапись.СчетДт = ПланыСчетов.Хозрасчетный.ОСвОрганизации;
         БухгалтерскийУчет.УстановитьСубконто(НоваяЗапись.СчетДт, НоваяЗапись.СубконтоДт, "ОсновныеСредства", СтрокаОС.Ссылка);
         НоваяЗапись.СчетКт = ПланыСчетов.Хозрасчетный.Вспомогательный;
     КонецЦикла;
    
     РегХозрасчетный.Записывать = Истина;
     РегХозрасчетный.Записать();
    
КонецФункции
3 salvator
 
12.05.14
10:51
Функция должна что-то возвращать. Она вызывается где-то?
4 Wobland
 
12.05.14
10:58
(2) это оно с фотки пример берёт
5 salvator
 
12.05.14
11:00
+(3) Сам документ тоже неплохо бы записать было потом.
6 04347
 
12.05.14
12:07
(5) сам документ записывается, функцию попробовала заменить на процедуру. Табличная часть все равно не заполняется
7 Wobland
 
12.05.14
12:23
ничего, что у него ТЧ нет. совсем. напрочь
8 Segate
 
12.05.14
12:35
(7) а вдруг у него табличное поле по сведениям из регистра заполняется</ванга>
9 salvator
 
12.05.14
12:36
(6) Не видно, где он записывается?
10 04347
 
12.05.14
13:23
(7)в этом и сложность, что нет табличного поля, поэтому и вызываются регистры бухгалтерии
11 04347
 
12.05.14
13:42
(9) если вставить

НовыйОбъект.Комментарий="МОЛ: "+Строка(МОЛ);
  КонецФункции

то комментарий меняется в зависимости от того, какое Мол(физ лицо) выбрали.
12 Wobland
 
12.05.14
13:48
(10) а вот ТП на форме как раз есть
где-то ты врёшь
13 04347
 
12.05.14
14:00
(9) полный текст обработки
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    //Откроем форму выбора МОЛ
    ЭтаФорма.ОткрытьМодально(120);
    Если Объект.МОЛ.Пустая() Тогда
        Возврат; //Не выбран МОЛ или закрытие формы по таймауту
    КонецЕсли;
    //Спросим у пользователя разрешение на продолжение обработки
    Режим = РежимДиалогаВопрос.ДаНет;
    Текст = "Табличная часть документа будет заменена новыми данными.
    |Продолжить?";
    Ответ = Вопрос(Текст, Режим, 0);
    Если Ответ = КодВозвратаДиалога.Да Тогда
        Для каждого Элемент из ОбъектыНазначенияМассив Цикл
            КлючПоиска = Новый Структура("Ключ", Элемент);
            Окна = ПолучитьОкна();
            Для каждого Окно из Окна Цикл
                Если НЕ Окно.Основное
                    И Найти(Окно.Заголовок, Элемент) Тогда
                    Форма = ОткрытьФорму("Документ.ОперацияБух.Форма.ФормаДокумента",КлючПоиска,,,Окно);
                    НовыйОбъект = Форма.Объект;
                    
                    ЗаполнитьОбъект(НовыйОбъект,Объект.МОЛ);
                    
                    //После выполнения процедуры на сервере мы получаем изменную переменную НовыйОбъект,
                    //которую необходимо передать в уже полученную нами форму
                    КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
                    Форма.Записать();
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

&НаСервере

Функция ЗаполнитьОбъект(НовыйОбъект,МОЛ)
    
    ВыборкаОС=ОстаткиОС();
    РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    РегХозрасчетный.Отбор.Регистратор.Установить(НовыйОбъект.Ссылка);
    Для Каждого СтрокаОС Из ВыборкаОС Цикл
        НоваяЗапись = РегХозрасчетный.Добавить();
        НоваяЗапись.Период=НовыйОбъект.Дата;
        НоваяЗапись.Регистратор = НовыйОбъект.Ссылка;
        НоваяЗапись.Организация = НовыйОбъект.Организация;
        НоваяЗапись.Содержание  = "Корректировка стоимости ОС ";
        НоваяЗапись.Сумма  = 1000;
        НоваяЗапись.СчетДт = ПланыСчетов.Хозрасчетный.ОСвОрганизации;
        БухгалтерскийУчет.УстановитьСубконто(НоваяЗапись.СчетДт, НоваяЗапись.СубконтоДт, "ОсновныеСредства", СтрокаОС.Ссылка);
        НоваяЗапись.СчетКт = ПланыСчетов.Хозрасчетный.Вспомогательный;
    КонецЦикла;
    
    РегХозрасчетный.Записывать = Истина;
    РегХозрасчетный.Записать();
    НовыйОбъект.Комментарий="МОЛ: "+Строка(МОЛ);
КонецФункции

&НаСервере

Функция ОстаткиОС()
    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |ОсновныеСредства.Наименование,
    |ОсновныеСредства.Ссылка
    |ИЗ
    |Справочник.ОсновныеСредства КАК ОсновныеСредства ";
    
    Возврат Запрос.Выполнить().Выгрузить();
КонецФункции

&НаКлиенте
Процедура ЗаполнитьПоМОЛ(Команда)
    ЭтаФорма.Закрыть(Объект.МОЛ);
КонецПроцедуры
14 04347
 
12.05.14
14:01
(12) наверное не вру, а не понимаю. Поэтому и не работает
Независимо от того, куда вы едете — это в гору и против ветра!