|
v7: СвойстваНоменклатуры | ☑ | ||
---|---|---|---|---|
0
odinAssDbl Seven
16.12.20
✎
11:06
|
Всем привет, в 1с ни в зуб ногой, но стоит задача, которую не могу нагуглить. Помогите разобраться плз. Задача максимум - сделать аналог отчета Остатки ТМЦ в ТиС 9.2 релиз 932, но в виде отдельной обработки, которая молча будет делать файл csv или post запрос на сервер. ТМЦ должны выгружаться только те, что имеют ВидСвойства "на сайт" и ЗначениеСвойства "да". Задача минимум, понять как программно дернуть эти самые свойства товаров. Я могу получить все товары и не могу отфильтровать их. Все, что удалось найти, это "ИспользоватьВладельца", но я не могу прикрутить эту конструкцию к циклу. В модуле оригинального отчета есть такая строка глФильтрПоПеременнойЗапроса (ТаблицаМФ,"Номенклатура",ВыбТМЦ,"ВыбТМЦ", ТекстЗапроса,Загол,"СвойстваНоменклатуры"); В ТаблицаМФ в ЗначенияСвойств есть список элементов в котором есть значение "да", но нигде нет ВидСвойства "на сайт". Т.е. запрос скопипастить без ручного добавления в Множественный фильтр не выходит. Подскажите плз как это реализовать?
|
|||
1
Базис
naïve
16.12.20
✎
11:07
|
Кнопку в форме осилишь?
|
|||
2
Базис
naïve
16.12.20
✎
11:10
|
Тогда сделай заполнение выбранной номенклатуры по нужному тебе свойству.
Хотя там вроде и подбор по свойству есть. |
|||
3
odinAssDbl Seven
16.12.20
✎
11:14
|
(1) кнопку то я осилю, но нужно, чтобы это было без множественного фильтра
|
|||
4
uno-group
16.12.20
✎
11:31
|
Правильный файл csv без Бом в нужной кодировке + выборка + куча т.п. тут с наскоку не взлетит. добраться до свойства номенклатуры и сделать выборку это меньшая из проблем. Проще обратиться к специалисту. Сам убьешь недели 2-3 на разбирательство как это сделать.
|
|||
5
uno-group
16.12.20
✎
11:38
|
А так правую кнопку мышки на отчете "Сохранить как внешний отчет обработку" и дальше правишь этот отчет.
В начале отчета текст=СоздатьОбъект("текст"). в нужных местах после или вместо таб.ВывестиСекцию(); пишешь Текст.ДобавитьСтроку(....). в конце отчета. Текст.Записать(...) |
|||
6
odinAssDbl Seven
16.12.20
✎
11:42
|
(4) спасибо за совет, но пока есть и время, и желание желание разобраться, как это работает. А во сколько вы оцениваете эту работу, если не секрет?
|
|||
7
uno-group
16.12.20
✎
11:43
|
Текст.ДобавитьСтроку(....) нужно вставить кучу проверок и замен убрать переводы строк и т.п. из данных которые сделают файл не читаемым. Отлично работающий отчет на 10 товарах - 2 дня отлаживал на 10 тысячах. Выходил csv с ошибками.
Одну ошибку так и не поборол получилось только выдать юзеру предупреждение с котом товара который нужно глазами смотреть и исправлять в нем данные. |
|||
8
odinAssDbl Seven
16.12.20
✎
11:48
|
(7)
спр = СоздатьОбъект("Справочник.Номенклатура"); спр.ВыбратьЭлементы(); Пока спр.ПолучитьЭлемент()=1 Цикл Если ПустоеЗначение(спр.ПолнНаименование) = 0 Тогда Сообщить(спр.ПолнНаименование); КонецЕсли; КонецЦикла; как в цикле получить все свойства позиции? |
|||
9
uno-group
16.12.20
✎
11:48
|
(6) Зависит от количества товаров, количества выгружаемых полей, наличия в них строк неограниченной длинны и т.п.
от 50 у.е. |
|||
10
uno-group
16.12.20
✎
11:52
|
Я бы юзалл Спр.СоздатьОбъект("Справочник.СвойстваНоменклатуры")
Спр.ВыбратьПоРеквизиту("ВидСвойства",Константа.ВыгружатьНаСайт...); ТМЦ=Спр.Владелец |
|||
11
Злопчинский
16.12.20
✎
14:01
|
Вы все дятлы.
делается запрос к спр.Свойства.Номенклатуры с фильтром по нужному виду и значению в запросе тянется владелец-товар. Всё. ща накидаю, если ГМ не свариляс еще... |
|||
12
Злопчинский
16.12.20
✎
14:06
|
а вот если НЕ выгружать на сайт товары, которые ВидСвойства.Выгружать = НЕТ, а любое другое значение свойства или остуствие свойства = выгружать - тогда сложнее, но не особо, первым запросом собираем "не выгружаемые", вторым запросом по спр.номенклатура выбираем с филтиром Не В Списке (невыгружаемые)
|
|||
13
Злопчинский
16.12.20
✎
14:16
|
https://ibb.co/b1fKjkS
. сделано конструктором. Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Без итогов; |ВидСвойства = Справочник.СвойстваНоменклатуры.ВидСвойства; |ЗначениеСвойства = Справочник.СвойстваНоменклатуры.ЗначениеСвойства; |Владелец = Справочник.СвойстваНоменклатуры.Владелец; |Группировка Владелец упорядочить по Владелец.Код без групп; |Условие(ВидСвойства = ВыбВидСвойства); |Условие(ЗначениеСвойства = ВыбЗначениеСвойства); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка() = 1 Цикл // Заполнение полей Сформировать Таб.ВывестиСекцию("Сформировать"); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
|||
14
odinAssDbl Seven
18.12.20
✎
09:47
|
(13) спасибо за помощь, я немного по-другому сделал: создаю объект номенклатура, перебирая элементы смотрю свойства через "использоватьВладелльца" а остатки выгружаю через через сводныйОстаток. Возник другой вопрос: как при создании объекта номенклатура ограничить его размер указав только одно наименование номенклатуры?
|
|||
15
Bigbro
18.12.20
✎
09:54
|
(14) перебирая элементы ты дрюкаешь базу обращениями, если у тебя сотня тысяч элементов - будет сто тысяч обращений так делать не стоит, лучше воспользуйся тем что Злоп написал - запросом выдергиваешь данные.
а по поводу только одного наименования - добавь на форму "выбНоменклатура" - Элемент справочника. и если ПустоеЗначение(выбНоменклатура)=0 тогда ТекстЗапроса = ТекстЗапроса + " |Условие (Владелец = ВыбНоменклатура); |"; примерно так. |
|||
16
odinAssDbl Seven
18.12.20
✎
10:05
|
(15) запросы пока еще не осилил. У меня нет формы, все работает в одной функции.
ном = СоздатьОбъект("Справочник.Номенклатура"); ном.ВыбратьЭлементы(); Пока ном.ПолучитьЭлемент()=1 Цикл //тут вся логика с выгрузкой КонецЦикла; вот можно как-то при создании ном указать один элемент справочника? |
|||
17
Bigbro
18.12.20
✎
10:10
|
ном это ссылка, через выбрать получить ты получаешь указатель на конкретный элемент, для перебора.
можешь просто передавать в функцию нужный тебе элемент, и ном.НайтиЭлемент(выбЭлемент) использовать |
|||
18
Bigbro
18.12.20
✎
10:12
|
запросы надо осиливать, тут как раз простой пример чтобы разобраться, пощупать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |