Получение Значения из таблицы значения [v7.7 Конфигурация-Бухгалтерский учёт,редакция 4.5]
08.11.2010
15:33
#1
"Доброго времени суток.
Собственно не могу понять, как преодолеть сие трудность:
Есть самописная выгрузка. Пытаюсь её дописать.
Что требуется:
Получить значение КодДвижения из таблицы значений ТЗ1, и на основании этого назначить переменной ВО :см. ниже
Примерно так:
ВО=?(КодДвижения=2,"1",0); //[Как есть сейчас- не работает, так как ]
ВО уже использую в личных целях. Там всё работает."
Собственно не могу понять, как преодолеть сие трудность:
Есть самописная выгрузка. Пытаюсь её дописать.
Что требуется:
Получить значение КодДвижения из таблицы значений ТЗ1, и на основании этого назначить переменной ВО :см. ниже
Примерно так:
ВО=?(КодДвижения=2,"1",0); //[Как есть сейчас- не работает, так как ]
ВО уже использую в личных целях. Там всё работает."
08.11.2010
15:50
#2
"1. Если
> Получить значение КодДвижения из таблицы значений ТЗ1
То где ТЗ1 в
> ВО=?(КодДвижения=2,"1",0); //[Как есть сейчас- не работает, так как ]
Может надо так:
ВО=?(ТЗ1.КодДвижения=2,"1",0);
Учитывая, что приведен только кусочек не ясно как сделан перебор ТЗ1 через ВыбратьСтроки или циклом по индексам, а может вообще не сделан.
2.
> ВО уже использую в личных целях. Там всё работает.
Что бы это значило? Не боитесь переназначить переменную в самый неподходящий момент? Или просто констатация факта, что "ВО" используется правильно?"
> Получить значение КодДвижения из таблицы значений ТЗ1
То где ТЗ1 в
> ВО=?(КодДвижения=2,"1",0); //[Как есть сейчас- не работает, так как ]
Может надо так:
ВО=?(ТЗ1.КодДвижения=2,"1",0);
Учитывая, что приведен только кусочек не ясно как сделан перебор ТЗ1 через ВыбратьСтроки или циклом по индексам, а может вообще не сделан.
2.
> ВО уже использую в личных целях. Там всё работает.
Что бы это значило? Не боитесь переназначить переменную в самый неподходящий момент? Или просто констатация факта, что "ВО" используется правильно?"
08.11.2010
16:02
#3
"1. При добавлении ТЗ1.КодДвижения не находит переменную ТЗ1.
ТЗ1 не переменная а таблица.
2. ТЗ1:
// Перебор таблиц прихода
Если ТипОтчета=1 тогда
//Возвраты поставщикам
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|ТекДок = Документ.СчетФактура.ТекущийДокумент;
|Контрагент = Документ.СчетФактура.Контрагент;
|Номенклатура = Документ.СчетФактура.Товар;
|НомерДок = Документ.СчетФактура.НомерДок;
|ДатаДок = Документ.СчетФактура.ДатаДок;
|Количество = Документ.СчетФактура.Количество;
|ВидОтгрузки = Документ.СчетФактура.ВидОтгрузки;
|Условие (ВидОтгрузки = 2);
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Номенклатура без групп;
|Группировка Контрагент;
|Группировка ТекДок;
|"//}}ЗАПРОС
;
Иначе
//Возвраты покупателей
ТекстЗапроса=
"//{{ЗАПРОС(Сформировать)
|Период с (НачДата-10) по (КонДата+10);
|ОбрабатыватьДокументы Проведенные;
|ТекДок = Документ.ПоступлениеТоваров.ТекущийДокумент;
|Контрагент = Документ.ПоступлениеТоваров.Контрагент;
|Номенклатура = Документ.ПоступлениеТоваров.Товар;
|ТипМестаХранения = Документ.ПоступлениеТоваров.МестоХранения.ТипСклада;
|НомерДок = Документ.ПоступлениеТоваров.НомерДокВходящий;
|ДатаДок = Документ.ПоступлениеТоваров.ДатаДокВходящий;
|Количество = Документ.ПоступлениеТоваров.Количество;
|ВидПоступления = Документ.ПоступлениеТоваров.ВидПоступления;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Номенклатура без групп;
|Группировка Контрагент без групп;
|Группировка ТекДок;
|Условие((ДатаДок<=КонДата) и (ДатаДок>=НачДата));
|Условие(ТипМестаХранения = ОптовыйСклад);
|Условие((ВидПоступления = 4) или (ВидПоступления = 13));
|"//}}ЗАПРОС ;
;
КонецЕсли;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Сч=0;
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
Пока Запрос.Группировка(3) = 1 Цикл
Сч=Сч+1;
Если Окр(Сч/100)=Сч/100 тогда
Состояние("Выгрузка запроса "+Сч);
КонецЕсли;
Если ТипЗначенияСтр(Запрос.Номенклатура)<>"Справочник" тогда
Продолжить;
КонецЕсли;
Если Запрос.Номенклатура.Вид()<>"Номенклатура" тогда
Продолжить;
КонецЕсли;
Группа=Запрос.Номенклатура.Родитель;
Код=Число(Прав(Группа.Код,СтрДлина(Группа.Код)-2));
Если (Код>199) и (Код<500) тогда
ТЗ1.НоваяСтрока();
ТЗ1.ВидДвижения="Возвраты";
ТЗ1.КодДвижения =2;
ТЗ1.КодВ =Код;
ТЗ1.ГруппаВ =Группа;
ТЗ1.Опт =СокрЛП(Запрос.Контрагент.ТипКонтрагента);
ТЗ1.Опт =?(ТЗ1.Опт="Производитель"," "+ТЗ1.Опт,ТЗ1.Опт);
ТЗ1.Контрагент =Запрос.Контрагент;
ТЗ1.Количество =Запрос.КоличествоСумма*Запрос.Номенклатура.Емкость/10000;
ТЗ1.ТекДок =Запрос.ТекДок;
ТЗ1.НомерДок =Запрос.НомерДок;
ТЗ1.ДатаДок =Запрос.ДатаДок;
// Разделяем по типу...
Адрес=РазобратьАдрес(Запрос.Контрагент.ЮридическийАдрес);
Если СокрЛП(Адрес.ПолучитьЗначение(2))<>"Воронежская обл." Тогда
ТЗ1.Район="Другие регионы";
ТЗ1.ГР=3
Иначе
ТЗ1.Район="Воронежский регион";
ТЗ1.ГР=1
КонецЕсли;
//Если Розница - убираем детализацию
Если ТЗ1.Опт="Розница" Тогда
ТЗ1.Район ="Розница";
ТЗ1.ГР =4;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
3. Констатация факта, что ВО используется правильно и только."
ТЗ1 не переменная а таблица.
2. ТЗ1:
// Перебор таблиц прихода
Если ТипОтчета=1 тогда
//Возвраты поставщикам
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|ТекДок = Документ.СчетФактура.ТекущийДокумент;
|Контрагент = Документ.СчетФактура.Контрагент;
|Номенклатура = Документ.СчетФактура.Товар;
|НомерДок = Документ.СчетФактура.НомерДок;
|ДатаДок = Документ.СчетФактура.ДатаДок;
|Количество = Документ.СчетФактура.Количество;
|ВидОтгрузки = Документ.СчетФактура.ВидОтгрузки;
|Условие (ВидОтгрузки = 2);
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Номенклатура без групп;
|Группировка Контрагент;
|Группировка ТекДок;
|"//}}ЗАПРОС
;
Иначе
//Возвраты покупателей
ТекстЗапроса=
"//{{ЗАПРОС(Сформировать)
|Период с (НачДата-10) по (КонДата+10);
|ОбрабатыватьДокументы Проведенные;
|ТекДок = Документ.ПоступлениеТоваров.ТекущийДокумент;
|Контрагент = Документ.ПоступлениеТоваров.Контрагент;
|Номенклатура = Документ.ПоступлениеТоваров.Товар;
|ТипМестаХранения = Документ.ПоступлениеТоваров.МестоХранения.ТипСклада;
|НомерДок = Документ.ПоступлениеТоваров.НомерДокВходящий;
|ДатаДок = Документ.ПоступлениеТоваров.ДатаДокВходящий;
|Количество = Документ.ПоступлениеТоваров.Количество;
|ВидПоступления = Документ.ПоступлениеТоваров.ВидПоступления;
|Функция КоличествоСумма = Сумма(Количество);
|Группировка Номенклатура без групп;
|Группировка Контрагент без групп;
|Группировка ТекДок;
|Условие((ДатаДок<=КонДата) и (ДатаДок>=НачДата));
|Условие(ТипМестаХранения = ОптовыйСклад);
|Условие((ВидПоступления = 4) или (ВидПоступления = 13));
|"//}}ЗАПРОС ;
;
КонецЕсли;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Сч=0;
Пока Запрос.Группировка(1) = 1 Цикл
Пока Запрос.Группировка(2) = 1 Цикл
Пока Запрос.Группировка(3) = 1 Цикл
Сч=Сч+1;
Если Окр(Сч/100)=Сч/100 тогда
Состояние("Выгрузка запроса "+Сч);
КонецЕсли;
Если ТипЗначенияСтр(Запрос.Номенклатура)<>"Справочник" тогда
Продолжить;
КонецЕсли;
Если Запрос.Номенклатура.Вид()<>"Номенклатура" тогда
Продолжить;
КонецЕсли;
Группа=Запрос.Номенклатура.Родитель;
Код=Число(Прав(Группа.Код,СтрДлина(Группа.Код)-2));
Если (Код>199) и (Код<500) тогда
ТЗ1.НоваяСтрока();
ТЗ1.ВидДвижения="Возвраты";
ТЗ1.КодДвижения =2;
ТЗ1.КодВ =Код;
ТЗ1.ГруппаВ =Группа;
ТЗ1.Опт =СокрЛП(Запрос.Контрагент.ТипКонтрагента);
ТЗ1.Опт =?(ТЗ1.Опт="Производитель"," "+ТЗ1.Опт,ТЗ1.Опт);
ТЗ1.Контрагент =Запрос.Контрагент;
ТЗ1.Количество =Запрос.КоличествоСумма*Запрос.Номенклатура.Емкость/10000;
ТЗ1.ТекДок =Запрос.ТекДок;
ТЗ1.НомерДок =Запрос.НомерДок;
ТЗ1.ДатаДок =Запрос.ДатаДок;
// Разделяем по типу...
Адрес=РазобратьАдрес(Запрос.Контрагент.ЮридическийАдрес);
Если СокрЛП(Адрес.ПолучитьЗначение(2))<>"Воронежская обл." Тогда
ТЗ1.Район="Другие регионы";
ТЗ1.ГР=3
Иначе
ТЗ1.Район="Воронежский регион";
ТЗ1.ГР=1
КонецЕсли;
//Если Розница - убираем детализацию
Если ТЗ1.Опт="Розница" Тогда
ТЗ1.Район ="Розница";
ТЗ1.ГР =4;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
3. Констатация факта, что ВО используется правильно и только."
Читают тему
(гостей: 1)