helpf.pro
Регистрация
 0 
Распечатать

1С 8.x : Пример проверки на заполнения нужных нам колонок в табличной части документа

Код 1C v 8.х
 МассивКолонок = Новый Массив;
МассивКолонок.Добавить("Количество");

СсылочныеКолонки = Новый Соответствие;
СсылочныеКолонки["Адрес"] = Справочники.АдресаЯчеек.ПустаяСсылка();
СсылочныеКолонки["Товар"] = Справочники.Номенклатура.ПустаяСсылка();
ПроверкаЗаполненияТабличнойЧасти(Ссылка, "Товары", МассивКолонок, СсылочныеКолонки, Отказ);

//выбирает не заполненные строки
//СсылкаНаОбъект - ссылка на проверяемый документ, ИмяТабЧасти - имя проверяемой табличной части,
//СписокКолонок - массив с именами колонок
//СсылочныеКолонки - соответсвие имен колонок и пустых ссылок типов этих колонок
Процедура ПроверкаЗаполненияТабличнойЧасти(СсылкаНаОбъект, ИмяТабЧасти = "Товары", СписокКолонок, СсылочныеКолонки = Неопределено, Отказ = Ложь, Заголовок = "") Экспорт

ИмяДока = СсылкаНаОбъект.Метаданные().Имя;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

ТекстЗапроса = "ВЫБРАТЬ
| Док.НомерСтроки
|ИЗ
| Документ." + ИмяДока + "." + ИмяТабЧасти + " КАК Док
|ГДЕ
| Док.Ссылка = &Ссылка И (";
СтрокаКолонок = "";

Если СсылочныеКолонки <> Неопределено Тогда

Для каждого Колонка Из СсылочныеКолонки Цикл
ТекстЗапроса = ТекстЗапроса + " Док." + Колонка.Ключ + " = &" + Колонка.Ключ + " ИЛИ";
СтрокаКолонок = СтрокаКолонок + Колонка.Ключ + ", ";
Запрос.УстановитьПараметр(Колонка.Ключ, Колонка.Значение);
КонецЦикла;

КонецЕсли;

Для каждого Колонка Из СписокКолонок Цикл
ТекстЗапроса = ТекстЗапроса + " Док." + Колонка + " = 0 ИЛИ";
СтрокаКолонок = СтрокаКолонок + Колонка + ", ";
КонецЦикла;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Колонка + " = 0 ИЛИ", Колонка + " = 0)");

Запрос.Текст = ТекстЗапроса;
СтрокаСообщения = "Проверка табличной части на заполнение по колонкам: " + СтрокаКолонок;
Результат = Запрос.Выполнить().Выбрать();
ЕстьОшибки = Ложь;
Пока Результат.Следующий() Цикл

СтрокаСообщения = СтрокаСообщения + Символы.ПС
+ "В строке № " + Формат(Результат.НомерСтроки, "ЧГ=0")
+ " есть не заполненное значение!";
ЕстьОшибки = Истина;

КонецЦикла;

Если ЕстьОшибки Тогда
СообщитьОбОшибке(СтрокаСообщения, Отказ, Заголовок);
КонецЕсли;

КонецПроцедуры
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 8901
 0 
Распечатать
Возможно, вас также заинтересует
Excel файл как Внешний источник данных 4
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . ...
Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 0
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п....
База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное...
Ввести дату, ввод даты 1
ДатаНапоминания = РабочаяДата; Подсказка = "Введите дату и время"; ЧастьДаты = ЧастиДаты.ДатаВремя; Если ВвестиДату(ДатаНапоминания, Подсказка, ЧастьДаты) Тогда // обработка даты напоминания КонецЕсли Если...
Ввести значение, ввод значения 0
//Пример универсального ввода значения Перем ВыбЗнач; Массив = Новый Массив; Массив.Добавить(Тип("Число")); Массив.Добавить(Тип("Строка")); Массив.Добавить(Тип("Дата")); КЧ = Новый КвалификаторыЧисла(12,2); КС = Новый...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.