Выгрузка в Excel Плохой тип переменной
10.03.2009
06:42
#12
"> Сообщить(ТипЗначенияСтр(МФКатЦены.ПолучитьЗначение(Ном)));
> -Справочник-
>
Вот и ответ
То есть нужно не справочник выводить в Excel, а какой-то конуретный реквизит
Например
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном).Наименование;
или если вы будете загружать в копию базы, то можно
Exc.Cells(1, Ном).Value=ЗначениеВСтроку(МФКатЦены.ПолучитьЗначение(Ном));
"
> -Справочник-
>
Вот и ответ
То есть нужно не справочник выводить в Excel, а какой-то конуретный реквизит
Например
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном).Наименование;
или если вы будете загружать в копию базы, то можно
Exc.Cells(1, Ном).Value=ЗначениеВСтроку(МФКатЦены.ПолучитьЗначение(Ном));
"
12.03.2009
09:55
#14
"Теперь еще одна поблемка
Есть переменная "ЧЦена" в которой определяется цена товара
если я делаю так:
Для Инд = 1 По КолРек Цикл
Exc.Cells(ТекСтрока-1, Инд+4).Value =ЧЦена;
КонецЦикла;
то во все колонки (закупочная, мелкооптовая, оптовая, розничная) пишется значение первой строки
списка МФКатЦены, если первая в списке была закупочная цена то во все четыре колонки пишется закупочная цена.
А хотелось бы чтобы цена соответствовала колонке.
Помогите подалуйста."
Есть переменная "ЧЦена" в которой определяется цена товара
если я делаю так:
Для Инд = 1 По КолРек Цикл
Exc.Cells(ТекСтрока-1, Инд+4).Value =ЧЦена;
КонецЦикла;
то во все колонки (закупочная, мелкооптовая, оптовая, розничная) пишется значение первой строки
списка МФКатЦены, если первая в списке была закупочная цена то во все четыре колонки пишется закупочная цена.
А хотелось бы чтобы цена соответствовала колонке.
Помогите подалуйста."
12.03.2009
10:10
#15
Из данного куска кода абсолютно не понятно, как Вы определяете значение переменной ЧЦена
По хорошему надо воспользоваться отладчиком, посмотреть значения
Я бы для формирования данных для выгрузки воспользовалась бы не списоком значений МФКатЦены, а таблицей значений
С колонками соответствующими Exceleвской таблице
Заполнила бы ее
Посмотрела в отладчике или через ТЗ.ВыбратьСтроку(), что у меня получилось, а потом бы уже все это засунула в Excel
По хорошему надо воспользоваться отладчиком, посмотреть значения
Я бы для формирования данных для выгрузки воспользовалась бы не списоком значений МФКатЦены, а таблицей значений
С колонками соответствующими Exceleвской таблице
Заполнила бы ее
Посмотрела в отладчике или через ТЗ.ВыбратьСтроку(), что у меня получилось, а потом бы уже все это засунула в Excel
12.03.2009
10:16
#16
"Очень странный код. А вы что ожидали увидеть?
Грубо говоря вы всем 4-м колонкам присвоили одно значение ЧЦена.
Другое дело если ЧЦена массив или что-то типа того, тогда должно было быть так:
Для Инд = 1 По КолРек Цикл
Exc.Cells(ТекСтрока-1, Инд+4).Value =ЧЦена[Инд-1];
КонецЦикла;
А иначе, извините, ничего у вас не выйдет."
Грубо говоря вы всем 4-м колонкам присвоили одно значение ЧЦена.
Другое дело если ЧЦена массив или что-то типа того, тогда должно было быть так:
Для Инд = 1 По КолРек Цикл
Exc.Cells(ТекСтрока-1, Инд+4).Value =ЧЦена[Инд-1];
КонецЦикла;
А иначе, извините, ничего у вас не выйдет."
12.03.2009
12:30
#17
"Из своего кода я получить ничего другого и не ожидал
Поэтому и прошу совета
Для Инд = 1 По КолРек Цикл
Exc.Cells(ТекСтрока-1, Инд+4).Value = ЗДЕСЬ НУЖНО ПРАВИЛЬНО СФОРМИРОВАТЬ ЗАПРОС ЧТОБЫ ЗНАЧЕНИЕ ПЕРЕМ. "ЧЦена" ФОРМИРОВАЛАСЬ ПО ЗНАЧЕНИЮ НОМЕРА СТРОКИ ИЗ СПИСКА МФКатЦены;
КонецЦикла;
Например как это было в случае заполнения шапки
Exc.Cells(1, Ном+4).Value=МФКатЦены.ПолучитьЗначение(Ном).Наименование;
Только теперь нужно получить не название цены по номеру в списке МФКатЦены, а цену по номеру в списке
забыл добавить КолРек=МФКатЦены.РазмерСписка()"
Поэтому и прошу совета
Для Инд = 1 По КолРек Цикл
Exc.Cells(ТекСтрока-1, Инд+4).Value = ЗДЕСЬ НУЖНО ПРАВИЛЬНО СФОРМИРОВАТЬ ЗАПРОС ЧТОБЫ ЗНАЧЕНИЕ ПЕРЕМ. "ЧЦена" ФОРМИРОВАЛАСЬ ПО ЗНАЧЕНИЮ НОМЕРА СТРОКИ ИЗ СПИСКА МФКатЦены;
КонецЦикла;
Например как это было в случае заполнения шапки
Exc.Cells(1, Ном+4).Value=МФКатЦены.ПолучитьЗначение(Ном).Наименование;
Только теперь нужно получить не название цены по номеру в списке МФКатЦены, а цену по номеру в списке
забыл добавить КолРек=МФКатЦены.РазмерСписка()"
12.03.2009
14:32
#18
"> Exc.Cells(1, Ном+4).Value=МФКатЦены.ПолучитьЗначение(Ном).Наименование;
Нет у вас в списке цены. У вас в списке элементы справочника. Возможно номенклатура или материалы (это Вам лучше знать)
А вот как получить цену зная чего-то - это другой вопрос
А ответ зависит от структуры вашей конфигурации
Если у Вас цены хранятся в справочнике "ЦеныНоменклатуры" и Цена - это периодический реквизит, то можно получить цену
По всей видимости у вас еще должен быть в этом справочнике реквизит "ТипЦен"
СпрЦены = СоздатьОбъект("Справочник.ЦеныНоменклатуры");
СпрЦены.ИспользоватьВладельца(МФКатЦены.ПолучитьЗначение(Ном).ТекущийЭлемент());
СпрЦены.ИспользоватьДату(КакаятоДата);
СпрЦены.ВыбратьЭлементы();
Пока СпрЦены.ПолучитьЭлемент()=1 Цикл
Если СпрЦены.ТипЦен.Наименование = "Закупочные" Тогда
Exc.Cells(ТекСтрока-1, Инд+1).Value = СпрЦены.Цена;
ИначеЕсли ... Тогда
Exc.Cells(ТекСтрока-1, Инд+2).Value = СпрЦены.Цена;
и т.д.
КонецЕсли;
КонецЦикла;
ИЛИ ТАК
СпрЦены = СоздатьОбъект("Справочник.ЦеныНоменклатуры");
СпрЦены.ИспользоватьВладельца(МФКатЦены.ПолучитьЗначение(Ном).ТекущийЭлемент());
Если СпрЦены.НайтиПоРеквизиту("ТипЦен",ЭлементСправочникаТипыЦен,0) = 1 Тогда
Exc.Cells(ТекСтрока-1, Инд+1).Value = СпрЦены.Цена.Получить(КакаятоДата);
КонецЕсли;
Если СпрЦены.НайтиПоРеквизиту("ТипЦен",ДругойЭлементСправочникаТипыЦен,0) = 1 Тогда
Exc.Cells(ТекСтрока-1, Инд+2).Value = СпрЦены.Цена.Получить(КакаятоДата);
КонецЕсли;
и т.д.
Можно конечно и запросом, но как-то в типовых конфигурациях запросов к справочникам очень мало
"
Нет у вас в списке цены. У вас в списке элементы справочника. Возможно номенклатура или материалы (это Вам лучше знать)
А вот как получить цену зная чего-то - это другой вопрос
А ответ зависит от структуры вашей конфигурации
Если у Вас цены хранятся в справочнике "ЦеныНоменклатуры" и Цена - это периодический реквизит, то можно получить цену
По всей видимости у вас еще должен быть в этом справочнике реквизит "ТипЦен"
СпрЦены = СоздатьОбъект("Справочник.ЦеныНоменклатуры");
СпрЦены.ИспользоватьВладельца(МФКатЦены.ПолучитьЗначение(Ном).ТекущийЭлемент());
СпрЦены.ИспользоватьДату(КакаятоДата);
СпрЦены.ВыбратьЭлементы();
Пока СпрЦены.ПолучитьЭлемент()=1 Цикл
Если СпрЦены.ТипЦен.Наименование = "Закупочные" Тогда
Exc.Cells(ТекСтрока-1, Инд+1).Value = СпрЦены.Цена;
ИначеЕсли ... Тогда
Exc.Cells(ТекСтрока-1, Инд+2).Value = СпрЦены.Цена;
и т.д.
КонецЕсли;
КонецЦикла;
ИЛИ ТАК
СпрЦены = СоздатьОбъект("Справочник.ЦеныНоменклатуры");
СпрЦены.ИспользоватьВладельца(МФКатЦены.ПолучитьЗначение(Ном).ТекущийЭлемент());
Если СпрЦены.НайтиПоРеквизиту("ТипЦен",ЭлементСправочникаТипыЦен,0) = 1 Тогда
Exc.Cells(ТекСтрока-1, Инд+1).Value = СпрЦены.Цена.Получить(КакаятоДата);
КонецЕсли;
Если СпрЦены.НайтиПоРеквизиту("ТипЦен",ДругойЭлементСправочникаТипыЦен,0) = 1 Тогда
Exc.Cells(ТекСтрока-1, Инд+2).Value = СпрЦены.Цена.Получить(КакаятоДата);
КонецЕсли;
и т.д.
Можно конечно и запросом, но как-то в типовых конфигурациях запросов к справочникам очень мало
"
12.03.2009
16:09
#19
"начну с самого начала
есть форма в которой перед началом печати в списке (Индефикатор списка МФКатЦены) выбираются типы цен, например(закупочная розничная оптовая и тд..)
для формирования шапки мы использовали это:
КолРек=МФКатЦены.РазмерСписка();
Для Ном=1 по КолРек Цикл
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном).Наименование;
КонецЦикла
Например выбрав три типа цены - розничная, мелкооптовая и закупочная
мы получили
______A___________B________________C______
1| розничная | мелкооптовая | закупочная|
теперь нужно таким же способом сделать что бы в эти колонки вбивались цены
______A___________B________________C______
1| розничная | мелкооптовая | закупочная|
2| 500.00 | 400.00 | 300.00 |
используя вот это:
КолРек=МФКатЦены.РазмерСписка();
Для Инд = 1 По КолРек Цикл
Exc.Cells(ТекСтрока-1, Инд).Value = ЧЦена;
КонецЦикла
если в списке первой была указана цена закупочная то по всем трем колонкам выставилась цена 300.00
если первой в списке была розничная то соответственно 500.00 и тд.
вобщем мне нужно как то привязать значение перем. "ЧЦена" к номеру строки в списке МФКатЦены"
есть форма в которой перед началом печати в списке (Индефикатор списка МФКатЦены) выбираются типы цен, например(закупочная розничная оптовая и тд..)
для формирования шапки мы использовали это:
КолРек=МФКатЦены.РазмерСписка();
Для Ном=1 по КолРек Цикл
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном).Наименование;
КонецЦикла
Например выбрав три типа цены - розничная, мелкооптовая и закупочная
мы получили
______A___________B________________C______
1| розничная | мелкооптовая | закупочная|
теперь нужно таким же способом сделать что бы в эти колонки вбивались цены
______A___________B________________C______
1| розничная | мелкооптовая | закупочная|
2| 500.00 | 400.00 | 300.00 |
используя вот это:
КолРек=МФКатЦены.РазмерСписка();
Для Инд = 1 По КолРек Цикл
Exc.Cells(ТекСтрока-1, Инд).Value = ЧЦена;
КонецЦикла
если в списке первой была указана цена закупочная то по всем трем колонкам выставилась цена 300.00
если первой в списке была розничная то соответственно 500.00 и тд.
вобщем мне нужно как то привязать значение перем. "ЧЦена" к номеру строки в списке МФКатЦены"
13.03.2009
07:01
#20
"Вам уже объяснил BelikovS, что у вас в цикле ЧЦена всегда имеет одно и то же значение, соответственно и подставляется одно и то же значение, которое где-то когда-то вы должны определять, только для нас это тайна
Что бы для нас это стало меньшей тайной
нужно
1. значть структуру ваших справочников
2. понять как Вы формируете список МФКатЦены
3. Что Вы хотите видеть в списке
Явно вам не просто нужны цены, а еще наверное нужны и коды номенклатуры или артикулы или хзотя бы наименования
О чем Вам скажет просто набор цен?????
Скорее всего у вас должно быть что-то типа
______A___________B________________C_______________D____ ___
1| розничная | мелкооптовая | закупочная| Номенклатура |
2| 500.00 | 400.00 | 300.00 | Сапоги
3| 100.00 | 120.00 | 30.00 | Валеки
Сначала Вы формируете шапку, что у вас собственно сделано, а затем у вас должен быть цикл в цикле
Один цикл вы идете по номенклатуре
Спр = СоздатьОбъект("Справочники.Номенклатура");
Спр.ВыбратьЭлементы();
ТекСтрока = 1;
КолРек=МФКатЦены.РазмерСписка();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
ТекСтрока = ТекСтрока + 1;
Exc.Cells(ТекСтрока, КолРек+2).Value = Спр.Наименование;
СпрЦены = СоздатьОбъект("Справочник.ЦеныНоменклатуры");
СпрЦены.ИспользоватьВладельца(Спр.ТекущийЭлемент());
Для Инд = 1 По КолРек Цикл
Если СпрЦены.НайтиПоРеквизиту("ТипЦен",МФКатЦены.ПолучитьЗначение(Инд-1).ТекущийЭлемент(),0) = 1 Тогда
Exc.Cells(ТекСтрока, Инд+1).Value = СпрЦены.Цена.Получить(КакаятоДата);
КонецЕсли;
КонецЦикла
КонецЦикла;
"
Что бы для нас это стало меньшей тайной
нужно
1. значть структуру ваших справочников
2. понять как Вы формируете список МФКатЦены
3. Что Вы хотите видеть в списке
Явно вам не просто нужны цены, а еще наверное нужны и коды номенклатуры или артикулы или хзотя бы наименования
О чем Вам скажет просто набор цен?????
Скорее всего у вас должно быть что-то типа
______A___________B________________C_______________D____
1| розничная | мелкооптовая | закупочная| Номенклатура |
2| 500.00 | 400.00 | 300.00 | Сапоги
3| 100.00 | 120.00 | 30.00 | Валеки
Сначала Вы формируете шапку, что у вас собственно сделано, а затем у вас должен быть цикл в цикле
Один цикл вы идете по номенклатуре
Спр = СоздатьОбъект("Справочники.Номенклатура");
Спр.ВыбратьЭлементы();
ТекСтрока = 1;
КолРек=МФКатЦены.РазмерСписка();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
ТекСтрока = ТекСтрока + 1;
Exc.Cells(ТекСтрока, КолРек+2).Value = Спр.Наименование;
СпрЦены = СоздатьОбъект("Справочник.ЦеныНоменклатуры");
СпрЦены.ИспользоватьВладельца(Спр.ТекущийЭлемент());
Для Инд = 1 По КолРек Цикл
Если СпрЦены.НайтиПоРеквизиту("ТипЦен",МФКатЦены.ПолучитьЗначение(Инд-1).ТекущийЭлемент(),0) = 1 Тогда
Exc.Cells(ТекСтрока, Инд+1).Value = СпрЦены.Цена.Получить(КакаятоДата);
КонецЕсли;
КонецЦикла
КонецЦикла;
"
Читают тему
(гостей: 1)