Список документов

1. RapStore 17.09.18 09:43 Сейчас в теме
Салют всем! Хочу вывести номер и дату подчиненной счет-фактуры в список поступлений, не могу разобраться с циклами все делаю через обработчик ПриПолученииДанных вроде все выводит но выводит во всех строках ячейки выделенного значения при том не по порядку а на одну вниз вот пример кода :
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
4. x2z7yy 17.09.18 14:21 Сейчас в теме +0.3 $m
Процедура ПриПолученииДанных обрабатывает пачку строк. Т.е. при вызове этой процедуры в ОформленияСтрок попадают те строки которые выводятся на экран. Не нужно в этой процедуре обращаться к ЭлементыФормы.ДокументСписок.ТекущаяСтрока.
Нужно сделать вот так:

Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
СЧФ = РаботаСДиалогами.ПолучитьТекстСчетаФактуры(
        УчетНДС.НайтиПодчиненныйДокумент(ОформлениеСтроки.ДанныеСтроки.Ссылка,"СчетФактураПолученный"));
        Если СЧФ = Строка("Ввести счет-фактуру") Тогда
           ОформлениеСтроки.Ячейки.СчетФактура.Значение = "";
        Иначе
           ОформлениеСтроки.Ячейки.СчетФактура.Значение = СЧФ;
        КонецЕсли;
    КонецЦикла;
Показать


Если использовать подход как в (3), нужно использовать процедуру ПриВыводеСтроки.
1C-Nic; RapStore; acanta; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RapStore 17.09.18 09:43 Сейчас в теме
3. RapStore 17.09.18 09:46 Сейчас в теме
Строка = ЭлементыФормы.ДокументСписок.ТекущаяСтрока ;

		СЧФ = РаботаСДиалогами.ПолучитьТекстСчетаФактуры(
		УчетНДС.НайтиПодчиненныйДокумент(Строка,"СчетФактураПолученный"));
	
		   ДокументСписок.Обновить();
	   
	Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
		Если СЧФ = Строка("Ввести счет-фактуру") Тогда
	       ОформлениеСтроки.Ячейки.СчетФактура.Значение = "";
		Иначе
		   ОформлениеСтроки.Ячейки.СчетФактура.Значение = СЧФ;
		КонецЕсли;
	КонецЦикла;
Показать
4. x2z7yy 17.09.18 14:21 Сейчас в теме +0.3 $m
Процедура ПриПолученииДанных обрабатывает пачку строк. Т.е. при вызове этой процедуры в ОформленияСтрок попадают те строки которые выводятся на экран. Не нужно в этой процедуре обращаться к ЭлементыФормы.ДокументСписок.ТекущаяСтрока.
Нужно сделать вот так:

Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
СЧФ = РаботаСДиалогами.ПолучитьТекстСчетаФактуры(
        УчетНДС.НайтиПодчиненныйДокумент(ОформлениеСтроки.ДанныеСтроки.Ссылка,"СчетФактураПолученный"));
        Если СЧФ = Строка("Ввести счет-фактуру") Тогда
           ОформлениеСтроки.Ячейки.СчетФактура.Значение = "";
        Иначе
           ОформлениеСтроки.Ячейки.СчетФактура.Значение = СЧФ;
        КонецЕсли;
    КонецЦикла;
Показать


Если использовать подход как в (3), нужно использовать процедуру ПриВыводеСтроки.
1C-Nic; RapStore; acanta; +3 Ответить
6. x2z7yy 19.09.18 06:20 Сейчас в теме
+(4)
Вообще такой код, с точки зрения производительности, будет плох и, возможно, будет доставлять неудобства пользователям в момент прокрутки списков, т.к. по сути "УчетНДС.НайтиПодчиненныйДокумент(..." это будет запрос к базе. Соответственно, получается, что этот запрос будет в цикле, причем этот цикл будет часто избыточен, т.к. ПриПолученииДанных часто не очевидно срабатывает – то одну строку получает, а то возьмет и всю пачку с экрана (30 штук к примеру) еще и пару раз подряд.

Чтобы уйти от этого нужно писать более сложный код, где из списка ОформленияСтрок доставать весь список ссылок на объекты, уже этот список передавать в один запрос (скорее всего писать придется свой, врятли есть готовый типовой, но не уверен) и только затем обрабатывать результат запроса и изменять строки в ОформленияСтрок.

Но это уже совсем другая история))
5. RapStore 18.09.18 13:47 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот