Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 13:18

Работа с документами.

Автор AB, 23 мар 2017, 09:54

0 Пользователей и 1 гость просматривают эту тему.

AB

Добрый день!)

Есть два документа:
1) ПоступлениеТовара
2) УстановкаЦен

В документе УстановкаЦен есть поле Магазин(булево).
В документе ПоступлениеТовара есть реквизит "Магазин".

Так вот, когда мы заходим в документ ПоступлениеТовара там есть кнопка, с помощью которого на поступивший товар мы устанавливаем цены(с документом УстановкаЦен). Так вот, мне надо, что бы выполнялось условие
Есил Магазин такой-то такой-то, то в документе УстановкаЦен булевы поля выставлялись как нужно(по магазинам).

ПРобовал так:

    Бп = Документы.УстановкаЦенНоменклатуры;
    Если Объект.Магазин = "Магазин Дикси" тогда
        Бп.ВыбранныеЦены[0].Выбрана = Истина;
        Бп.ВыбранныеЦены[1].Выбрана = Истина;
        Бп.ВыбранныеЦены[2].Выбрана = ЛОЖЬ;
    Иначе
        Бп.ВыбранныеЦены[0].Выбрана = Истина;
        Бп.ВыбранныеЦены[1].Выбрана = ЛОЖЬ;
        Бп.ВыбранныеЦены[2].Выбрана = Истина;

    КонецЕсли;


Но получается так, что он не может получить данные документа УстановкаЦен. (ВыбранныеЦены - табличная часть документа УстановкаЦен).

Как правильно все сделать бы?

alex0402

Цитата: AB от 23 мар 2017, 09:54Бп = Документы.УстановкаЦенНоменклатуры;

В итоге Бп - Менеджер.
Цитата: AB от 23 мар 2017, 09:54Если Объект.Магазин = "Магазин Дикси" тогда
г**нокод

Цитата: AB от 23 мар 2017, 09:54Бп.ВыбранныеЦены
скорее всего будет ошибка.

может лучше для каждого магазина настроить свой вид цен и не трогать функционал УстановкаЦенНоменклатуры, он очень не прост для начинающего.

Спасибо за Сказать спасибо

AB

Цитата: alex0402 от 23 мар 2017, 10:05г**нокод

Так как лучше его будет сделать не таким?
Цитата: alex0402 от 23 мар 2017, 10:05
может лучше для каждого магазина настроить свой вид цен и не трогать функционал УстановкаЦенНоменклатуры, он очень не прост для начинающего.
Да, было бы проще, но надо реализовать именно так.

Как мне так связать документы(условно) 1на1(по полю и условию) и работать с данными уже другого документа(табл. части).
Добавлено: 23 мар 2017, 10:59


Точнее даже так, Документ УстановкаЦен создаеться на основании документа ПОступлениеТоваров.

И если в этот момент в документе ПоступлениеТоваров было выбрано одно поле, то изменить некоторые данные в ново созданном документе.

Как это можно реализовать?

alex0402

Цитата: AB от 23 мар 2017, 10:12Так как лучше его будет сделать не таким?

сравнение по наименованию в коде - сразу в топку!
так можно сделать, если ну очень срочно надо на короткое время.
Для таких целей нужно добавлять константы, справочники, регистры сведений с последующим заполнением в режиме предприятие и использование в коде.
В коде нужно сравнивать только ссылки, допускается сравнение только общепринятых или утвержденных кодов.

Можно применять предопределенные значения справочников. Я этот метод обычно не использую, если справочник стоит на поддержке.
Спасибо за Сказать спасибо

AB

Цитата: alex0402 от 23 мар 2017, 11:18Для таких целей нужно добавлять константы, справочники, регистры сведений с последующим заполнением в режиме предприятие и использование в коде.

Если тогда документе УстановкаЦен создать реквизит "Магазины" который тоже ссылается на справочник "Магазины", что и Документ ПоступлениеТовара, то тогда уже можно связать будет?
Или без создания констант и регистра сведений не получиться?

alex0402

Нет это не совсем то. Вы в коде сравниваете с конкретным магазином.
Если Магазин такой, то выполнить это,
Если магазин другой, то выполнить другое.

Можно сделать РС Измерение Магазин Ресурс Перечисление.ВидДействийСЦенами
В коде (УстановкаЦенНоменклатуры) - определить какое перечисление соответсвует магазину и выполнить соответствующий код.

Потом РС заполнить
Магазин1 действие1
Магазин2 действие2
Магазин3 действие1
Магазин4 действие2

при добавлении новых магазинов код переписывать не нужно.

В УстановкаЦенНоменклатуры можно добавить реквизит Магазин только за тем что бы в коде не обращаться к другим документам и можно создать УстановкаЦенНоменклатуры не зависимо от других документов.
Спасибо за Сказать спасибо

AB

Цитата: alex0402 от 23 мар 2017, 12:05В коде (УстановкаЦенНоменклатуры) - определить какое перечисление соответсвует магазину и выполнить соответствующий код.

Немного не понял.

Вот есть этот регистр. Заполняю:
Магазин "Дикси", Ресурс "ПодстановкаМагазинаДикси"(как пример)
Магазин "Пятерочка", Ресурс "ПодстановкаМагазинаПяторочка"(все тот же пример)

Как мне определить? В том плане, что в первом документе явно указан магазин и на основе именно того документа(из 100) надо выполнить одно из двух действий.
А если просто из РС брать магазин и действие, то он будет выполнять его, но надо же как-то узнать какой именно там записан?

Или я не так вас понял?

alex0402

магазин - Реквизит документа и заполнен.
ВидКода = РегистрыСведений.Получить(Новый Структура("Магазин",Магазин)) ;
Если ВидКода.ВидКода = "что-то" тогда
//сделать сложное дело
Иначе
//сделать простое
КонецЕсли;


Если перед этим кодом есть запросы, то лучше впихнуть это (получение вида кода) туда.
Спасибо за Сказать спасибо

AB

Цитата: alex0402 от 23 мар 2017, 15:22
магазин - Реквизит документа и заполнен.
ВидКода = РегистрыСведений.Получить(Новый Структура("Магазин",Магазин)) ;
Если ВидКода.ВидКода = "что-то" тогда
//сделать сложное дело
Иначе
//сделать простое
КонецЕсли;


Если перед этим кодом есть запросы, то лучше впихнуть это (получение вида кода) туда.


Что я мог сделать не так, что при выполнении кода условие полностью игнорирует и Тогда не выполняет , а только Иначе, причем, не важно какое условие стоит.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск