1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
Bon Jovi 05.10.20 - 12:59 | Конфигурация: Trade (10.3.29.1) (http://v8.1c.ru/trade/), версия: 8.3.11.2867, обычные формы.
Добрый день. Подскажите пожалуйста в следующем. Почему в табличной части документа Установка цен номенклатуры у номенклатуры нет цены (пусто / по нулям), а если через запрос вывести все поля табличной части, то находится цена? Также если получить объект документа и обратиться в табличной части товары, то в ТЗ выводится такой же результат, как и через запрос. Например: ВЫБРАТЬ * ИЗ Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары ГДЕ УстановкаЦенНоменклатурыТовары.Ссылка = &Ссылка УПОРЯДОЧИТЬ ПО НомерСтроки *Не получается загрузить фото. https://ibb.co/LNfN1Dj | ||
Ёпрст 1 - 05.10.20 - 13:18 | (0) Дык назначь цену то.. | ||
Bon Jovi 2 - 05.10.20 - 13:21 | (1) Документы были созданы кое как программно (до меня). Теперь мне нужно найти документы, в табличной части которых есть позиции с такими пустыми значениями в полях цен. Чтобы именно было видно (отображено в документы при открытии), что пустая строка. | ||
Ёпрст 3 - 05.10.20 - 13:22 | (2) И ? Проблема то в чем ? | ||
Bon Jovi 4 - 05.10.20 - 13:36 | (3) Почему в табличной части документа Установка цен номенклатуры у номенклатуры нет цены (пусто / по нулям), а если через запрос вывести все поля табличной части, то находится цена? Также если получить объект документа и обратиться в табличной части товары, то в ТЗ выводится такой же результат, как и через запрос.
Я же прошу ответить на вопрос, а не прошу решение как было предложено в (1) . | ||
Жан Пердежон 5 - 05.10.20 - 13:37 | (4) там у документа еще табличные части есть, посмотри на них повнимательнее | ||
Bon Jovi 6 - 05.10.20 - 13:43 | (5) Там есть ещё только табличная часть ТипыЦен, которая содержит три поля: ссылку на документ, номер строки и сами типы цен. | ||
вым 7 - 05.10.20 - 13:48 | (4) посмотри не имя полей на форме, а что реально выводится, может не сами поля табличной части, а какие-то расчетные данные | ||
Bon Jovi 8 - 05.10.20 - 13:51 | (7) Скорее всего вы правы. Я думал об этом тоже, но не понимаю, куда рыть, чтобы запросом получить такую информацию | ||
вым 9 - 05.10.20 - 13:55 | (8) да, там на форме отражается таблица значений, в которую выводятся цены, устанавливаемые документом, а не просто напрямую данные табличной части
вот и смотри как они рассчитываются для вывода. все в коде | ||
Йохохо 10 - 05.10.20 - 13:57 | (8) проверьте ТЧ ТипыЦен, по ней создаются колонки | ||
Bon Jovi 11 - 05.10.20 - 13:59 | (10) не согласен. Так как иногда ТЧ ТипыЦен могут вообще отсутствовать в документах | ||
Bon Jovi 12 - 05.10.20 - 14:00 | (9) то есть, при открытии формы документа, происходит вычисления и заполнения полей табличной части товары... Плохо, потому что в таком случае, я понятия не имею как из тысяч документов найти те, в которых таким образом заполняются тч( | ||
вым 13 - 05.10.20 - 14:01 | // Процедура устанавливает колонки табличной часи в требуемом порядке, // добавляет недостающие колонки, убирает ненужные. // Процедура ОбновитьСоставКолонок()  // Надо расположить все нужные колонки в правильном порядке.  // Сначала должна идти колонка "Код". КолонкиТаблицыЦен = ТаблицаЦен.Колонки; ОчереднойНомерКолонки = 1; ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Код"); СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Артикул"); СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Номенклатура"); СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); ТекущаяКолонка = КолонкиТаблицыЦен.Найти("ХарактеристикаНоменклатуры"); СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); Для Каждого СтрокаТипаЦен Из ТипыЦен Цикл Если НЕ ЗначениеЗаполнено(СтрокаТипаЦен.ТипЦен) Тогда Продолжить; КонецЕсли; НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[СтрокаТипаЦен.ТипЦен]; Если НомерСоответствияТекущейКолонки = Неопределено Тогда НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен.Количество(); мСоответствиеТиповЦен.Вставить(СтрокаТипаЦен.ТипЦен, мСоответствиеТиповЦен.Количество()); КонецЕсли;  // Цена. ТекущаяКолонка = КолонкиТаблицыЦен.Найти("цена" + НомерСоответствияТекущейКолонки); Если ТекущаяКолонка = Неопределено Тогда// надо вставить КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "цена" + НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2, ДопустимыйЗнак.Неотрицательный), СокрЛП(СтрокаТипаЦен.ТипЦен), 10); ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1; Иначе СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); КонецЕсли;  // Способ расчета. ТекущаяКолонка = КолонкиТаблицыЦен.Найти("СпособРасчета" + НомерСоответствияТекущейКолонки); Если ТекущаяКолонка = Неопределено Тогда// надо вставить КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "СпособРасчета" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("ПеречислениеСсылка.СпособыРасчетаЦены"), "Способ расчета", 8); ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1; Иначе СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); КонецЕсли;  // Валюта. ТекущаяКолонка = КолонкиТаблицыЦен.Найти("валюта" + НомерСоответствияТекущейКолонки); Если ТекущаяКолонка = Неопределено Тогда// надо вставить КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "валюта" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.Валюты"), "Валюта", 8); ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1; Иначе СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); КонецЕсли;  // Единица измерения. ТекущаяКолонка = КолонкиТаблицыЦен.Найти("единица" + НомерСоответствияТекущейКолонки); Если ТекущаяКолонка = Неопределено Тогда// надо вставить КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "единица"+НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), "Единица", 8); ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1; Иначе СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); КонецЕсли;  // Процент скидки/наценки. ТекущаяКолонка = КолонкиТаблицыЦен.Найти("процент" + НомерСоответствияТекущейКолонки); Если ТекущаяКолонка = Неопределено Тогда// надо вставить КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "процент"+НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2), "% скидки (наценки)", 8); ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1; Иначе СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); КонецЕсли; КонецЦикла;  // Все, что за пределами, надо удалить. Для НомерУдаляемойКолонки = ОчереднойНомерКолонки По КолонкиТаблицыЦен.Количество() - 1 Цикл КолонкиТаблицыЦен.Удалить(ОчереднойНомерКолонки); КонецЦикла; ЭлементыФормы.ТаблицаЦен.СоздатьКолонки();  // Установим недостающие параметры. УстановитьНедостающиеПараметры(); КонецПроцедуры// ОбновитьСоставКолонок() | ||
вым 14 - 05.10.20 - 14:02 | |||
Bon Jovi 15 - 05.10.20 - 14:03 | (13) проверю... | ||
Йохохо 16 - 05.10.20 - 14:10 | (12) запросу то все равно, а вот чтобы показать пользователю вам придется починить/перезаполнить в документах ТЧ ТипыЦен | ||
Bon Jovi 17 - 05.10.20 - 15:01 | (16) к сожалению, вы правы. По крайней мере я уверен в этом на 99% | ||
Bon Jovi 18 - 06.10.20 - 12:08 | Хочу попробовать кое что ещё Не подскажите, как найти все документы, в табличной части которых есть позиции, у которых не заполнены цены типах цен (пустые строки)? Мой метод не совсем походит:
[C]ВЫБРАТЬ
УстановкаЦенНоменклатурыТовары.Ссылка КАК ДокументУстановкиЦен,
УстановкаЦенНоменклатурыТовары.ИндексСтрокиТаблицыЦен КАК ИндексСтрокиТаблицыЦен,
УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары
СГРУППИРОВАТЬ ПО
УстановкаЦенНоменклатурыТовары.Ссылка,
УстановкаЦенНоменклатурыТовары.ИндексСтрокиТаблицыЦен,
УстановкаЦенНоменклатурыТовары.Номенклатура
ИМЕЮЩИЕ
СУММА(УстановкаЦенНоменклатурыТовары.Цена) = 0
УПОРЯДОЧИТЬ ПО
ИндексСтрокиТаблицыЦен УБЫВ
ИТОГИ ПО
ДокументУстановкиЦен[/C] |
|
Список тем форума |