Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1C Программирование и поддержка

Модерирует : ShIvADeSt

ShIvADeSt (03-04-2009 02:03): Продолжение тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10256#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тема для программирования !!!
Это продолжение темы, предыдущие части доступны тут


ПРОГРАММЫ  1С:Предприятие 1C - 1C: Вопросы по конфигурациям

ВАРЕЗНИК   1C:Предприятие 7.7 - 1С:Предприятие v.8.x - 1C Диск ИТС - 1С: Совместимо 8.х

Топик 1C Ebooks
ЗДЕСЬ (обновлено 27.03.2009) - небольшая библиотечка (книги, документация, видео, утилиты) по 1С, финансам, бухучету и т.п.
Все рассортировано по версиям...

Для заблудившихся в трех соснах >>> FAQ по форуму RU.Board

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:30 06-02-2008 | Исправлено: vkramnik, 21:26 27-03-2009
AskYOU

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
 
Бухгалтерия 8
 
Пытаюсь в справочник номенклатура добавить колонку "Остаток".
 
(Знаю, остаток выводится в Обработке подбора, но нужно по всем организациям, а потом по каждой. Примерно понимаю, как работает Обработка подбора, но использовать не получилось. Несмотря на отслеживания выполнения и значений объектов в отладчике).
 
// Процедура обработчик события ПриПолученииДанных табличного поля СправочникСписок
//
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
     
      ОформлениеСтрокиПоНоменклатуре = Новый Соответствие;  
      ОтображаемыеТовары = Новый Массив;
     
      Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
             
             Товар = ОформлениеСтроки.ДанныеСтроки.Ссылка;
             
             // Заполнить  массив отображаемых номенклатурных позиций
             ОтображаемыеТовары.Добавить(Товар);
             
             // Заполнить соответствие товара и оформления строки
             ОформлениеСтрокиПоНоменклатуре.Вставить(Товар, ОформлениеСтроки);
             
      КонецЦикла;
             
      // Сформировать запрос для получения остатков
   
     // Сформировать запрос для получения остатков
      ЗапросОстатка = Новый Запрос;
     
   ЗапросОстатка.Текст = "
|    ВЫБРАТЬ
|        ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
|        СУММА(ВЫБОР КОГДА ХозрасчетныйОстатки.КоличествоОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстатки.КоличествоОстатокДт КОНЕЦ
|                - ВЫБОР КОГДА ХозрасчетныйОстатки.КоличествоОстатокКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстатки.КоличествоОстатокКт КОНЕЦ) КАК КоличествоОстаток
|    ИЗ
|        РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = &СчетТоваров, ХозрасчетныйОстатки.Субконто1.Номенклатура В (&Номенклатура))
| КАК ХозрасчетныйОстатки";
 
 
   //ЗапросОстатка.УстановитьПараметр("Дата", ТекущаяДата());
   ЗапросОстатка.УстановитьПараметр("СчетТоваров", ПланыСчетов.Хозрасчетный.Товары);
   ЗапросОстатка.УстановитьПараметр("Номенклатура", ОтображаемыеТовары);
      Выборка = ЗапросОстатка.Выполнить().Выбрать();
     
      Пока Выборка.Следующий() Цикл
             
             // Вывести остаток в строку, найденную в соответствии по номенклатуре из запроса
             ОформлениеСтрокиПоНоменклатуре.Получить(Выборка.Номенклатура).Ячейки.Остаток.Значение = Выборка.КоличествоОстаток;
             
      КонецЦикла;      
   
     
КонецПроцедуры //СправочникСписокПриПолученииДанных()
 
 
Ошибка:
 
РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = &СчетТоваров, ХозрасчетныйОстатки.Субконто1.Номенклатура <<?>>В (&Номенклатура))
      Выборка = ЗапросОстатка.Выполнить().Выбрать();
по причине:
{(7, 109)}: Неверные параметры "РегистрБухгалтерии.Хозрасчетный.Остатки, 2"
РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = &СчетТоваров, ХозрасчетныйОстатки.Субконто1.Номенклатура <<?>>В (&Номенклатура))
 
 
Не могу сообразить, как составить правильно минимально возможный запрос.
 
Задача - получить для каждой строки номенклатуры, не группы, отображаемой в списке Справочника Номенклатура, остаток товаров.
 
 
Помогите! Плз!

Всего записей: 56 | Зарегистр. 01-10-2007 | Отправлено: 18:35 11-02-2009
An4eus



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DARKDEAD
Цитата:
Задача: написать код для внешнего документа
это как понять? внешних документов я не знаю!

Цитата:
который изменяет партию для конкретной РН
если изменить партию для документа, то регистры тут не причём, нужно в документе менять!

Цитата:
Но при просмотре РН (движ. док), все равно остается старая партия
см. выше...
P.s. а вообще скрин давай, может чего и не понял!
 


----------
Век живи - век учись!

Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 01:56 12-02-2009
Akam1



Комса
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kalinakrasnay
А Вы смотрели в Отладчике, вообще документ какой-нибудь выбирается? Документы.Расходная_накладная - периодический документ? Если да, то добавьте после номера дату.
Цитата:
Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.
Параметр используется для документов с периодической нумерацией.
И уберите из названий символы "_", это как-то непринято. Пишите РасходнаяНакладная и СтрокаРасходнойНакладной и т.п.

----------
В правильно поставленном вопросе всегда содержится 50% ответа
Все будет так, как должно быть. Даже если будет иначе.

Всего записей: 26400 | Зарегистр. 20-04-2006 | Отправлено: 07:17 12-02-2009
DARKDEAD

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
An4eus
 

хочется сделать документ, который исправляет в регистре партию (док), на тот док. , который мне надо.

Всего записей: 249 | Зарегистр. 04-02-2008 | Отправлено: 10:39 12-02-2009 | Исправлено: DARKDEAD, 10:41 12-02-2009
RomanBor



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DARKDEAD

Цитата:
хочется сделать документ, который исправляет в регистре партию (док), на тот док. , который мне надо.

 
Если я правильно понял тебе надо изменить партию в движениях регистра с одного док. на другой, неменяя документ?
так ?
 
 
Добавлено:
AskYOU
 
 
 ЗапросОстатка.Текст = "  
|    ВЫБРАТЬ  
|        ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,  
|        СУММА(ВЫБОР КОГДА ХозрасчетныйОстатки.КоличествоОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстатки.КоличествоОстатокДт КОНЕЦ  
|                - ВЫБОР КОГДА ХозрасчетныйОстатки.КоличествоОстатокКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстатки.КоличествоОстатокКт КОНЕЦ) КАК КоличествоОстаток  
|    ИЗ  
|        РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет = &СчетТоваров,ХозрасчетныйОстатки.Субконто1 В (&Номенклатура))  
| КАК ХозрасчетныйОстатки";  
 
вот такой запрос попробуй, у субконто1. нет реквезита номенклатура  
 
 

Всего записей: 172 | Зарегистр. 02-06-2004 | Отправлено: 10:52 12-02-2009 | Исправлено: RomanBor, 11:02 12-02-2009
DARKDEAD

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
уважаемый, у меня 7-ка оперучет.

Всего записей: 249 | Зарегистр. 04-02-2008 | Отправлено: 11:05 12-02-2009
RomanBor



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DARKDEAD

Цитата:
уважаемый, у меня 7-ка  оперучет.

 
опа непрочитал предыдущую страницу.
 
для 7-ки не не ... забросил уже 2-а года подчти на ней некодил
 
 
и кажется в 7.7 не "текущим документом(который сдвинул эти регистры)" изменить движения нельзя, а если написать другой документ который будет предыдущий регистр минусовать, и другой плюсовать с другой партией , типа сторно %)

Всего записей: 172 | Зарегистр. 02-06-2004 | Отправлено: 11:21 12-02-2009 | Исправлено: RomanBor, 11:26 12-02-2009
DARKDEAD

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да надо на 8-ку переходить, да все ни как руки не доходят...
ЗЫ Сори, за офф топ.

Всего записей: 249 | Зарегистр. 04-02-2008 | Отправлено: 11:49 12-02-2009
kalinakrasnay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Документы.Расходная_накладная - периодический документ? Если да, то добавьте после номера дату.

был непериодический, а вообще он периодический в пределах года. Исправила и добавила дату.

Цитата:
А Вы смотрели в Отладчике, вообще документ какой-нибудь выбирается?

да, я смотрела.  

Код:
текРН=Документы.РасходнаяНакладная.НайтиПоНомеру(Номер,Дата);

Выбирается именно та накладная, которая нужна. В отладчике показываются все ее данные.
Я тут подумала (может бред): не может ли не работать "загрузить" из-за того, что пытаемся записать в найденный документ (просто я раньше работала с выгрузить/загрузить, писала все также как щас, НО я выгружала из найденного документа, а загружала в открытый...а сейчас ситуация обратная).  

Цитата:
И уберите из названий символы "_", это как-то непринято. Пишите РасходнаяНакладная и СтрокаРасходнойНакладной и т.п.

Исправила. Спасибо.

Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 11:51 12-02-2009
RomanBor



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kalinakrasnay
текРН=Документы.РасходнаяНакладная.НайтиПоНомеру(Номер,Дата);  
если текРН <> неопределено тогда
       //если документ найден нужно получить из ССЫЛКИ документа сам Объект для его изменения
      //И потом уже его менять
       текРН = текРН.ПолучитьОбъект();
конецесли;
 
пример загрузить в типовой РН.
ТЗ = _Док2.ТОВАРЫ.Выгрузить();
Док.ТОВАРЫ.загрузить(ТЗ);
 
тоясть загрузка как и выгрузка производятся из ТАБЛИЧНОЙ ЧАСТИ
и загрузятся только те колонки которые имеют такие же индефикаторы и типы данных.
 
если например в загружаемой ТЧ колонка: количество имеет тип Число длинна 15 разрядность 2, а загружаемая колонка количество имеет тип строка длинна 17 то нехрена у нас нечего незагрузится будут пустые значения вместо количества

Всего записей: 172 | Зарегистр. 02-06-2004 | Отправлено: 12:49 12-02-2009 | Исправлено: RomanBor, 12:51 12-02-2009
kalinakrasnay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RomanBor, по предложенному варианту получаю ссылку на объект, но все таже история. "Объект не доступен для изменения".
Про использование загрузить/выгрузить и про тонкости я в курсе. Главное, чтобы получилось загрузить без всяких ошибок, а уж подкорректировать я потом смогу.

Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 13:42 12-02-2009
RomanBor



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kalinakrasnay
 
пришли весь код где ты создаеш документ и заполняеш  

Всего записей: 172 | Зарегистр. 02-06-2004 | Отправлено: 14:02 12-02-2009
Lenarrr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет! У меня такая проблема возникла : Я Скачал платформу 1с 8.1 -8.1.13.41 и скачал хасп на нее ! установил ! все вроде бы работает , но возникает ошибка каждый раз при открытии в конфигураторе помошника(alt+F1) Ошибка : при попытке совместного открытия файла типа темп(временные файлы) в C:\Documents and Settings\Admin\Local Settings\Temp! Все пробовал - даже винду переустановил - та же проблема ! Может это хасп глючит! Не подскажите где найти нормальный хасп?

Всего записей: 19 | Зарегистр. 07-01-2009 | Отправлено: 16:17 12-02-2009
art0123



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Lenarrr Тебе сюда...
Там найдёшь всё нужное тебе...

Всего записей: 1300 | Зарегистр. 12-03-2008 | Отправлено: 16:39 12-02-2009
Lenarrr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Найду например что? я оттуда и скачивал эти платформу и ключ

Всего записей: 19 | Зарегистр. 07-01-2009 | Отправлено: 18:59 12-02-2009
kalinakrasnay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RomanBor,

Цитата:
пришли весь код где ты создаеш документ и заполняеш  

Вот код

Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 21:58 12-02-2009
kalinakrasnay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Akam1, RomanBor, хммм...я взяла и попробывала выгрузить/загрузить при создании новой РН (а не при заполнении существующей), и оно работает...все писала также! Смотреть код
Теперь я не могу понять почему не работает при неновой РН?
 
 

Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 10:02 13-02-2009 | Исправлено: kalinakrasnay, 10:02 13-02-2009
RomanBor



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kalinaKrasnaya

Цитата:
Akam1, RomanBor, хммм...я взяла и попробывала выгрузить/загрузить при создании новой РН (а не при заполнении существующей), и оно работает...все писала также!  
 
Теперь я не могу понять почему не работает при неновой РН?  

 
вот попробуй код

Код:
Процедура ВыполненныеРаботыРаботаПриИзменении(Элемент)  
    текраб=ЭлементыФормы.ВыполненныеРаботы.ТекущиеДанные;  
    _Работа = Справочники.Работа.НайтиПоНаименованию(текраб.работа);
//зачем ты постоянно ищеш нашли один раз и используем
    текраб.ЕИ = _Работа.ЕИ;  
    текраб.Цена=_Работа.Цена;  
    РассчитатьСумму(текраб);  
    Отбор = Новый Структура ("работа", текраб.работа);  
    нужное=РегистрыСведений.Спецификация.Выбрать(Отбор);  
    Пока нужное.Следующий() Цикл  
        Если нужное.модель=модель Тогда  
            ЭлементыФормы.НеобходимыйМатериал.ДобавитьСтроку();  
            текмт=ЭлементыФормы.НеобходимыйМатериал.ТекущаяСтрока;  
            текмт.материал=нужное.материал;  
            текмт.колВо=нужное.колВо;  
            текмт.ЕИ=Справочники.Материал.НайтиПоНаименованию(текмт.материал).ЕИ;  
        КонецЕсли  
    КонецЦикла;  
    КонецПроцедуры                                                                            
 
Процедура ПриОткрытии()  
    новЗН=ложь;  
    Итоги=ВыполненныеРаботы.Итог("Сумма") + НеобходимыйМатериал.Итог("Сумма");  
    ЭлементыФормы.Итого.Значение=Итоги;  
    Если ЭтотОбъект.ЭтоНовый() тогда  
        новЗН=истина;  
    КонецЕсли;  
КонецПроцедуры  
 
Процедура ПриЗаписи(Отказ)  
    Если  новЗН=истина Тогда  
        ндок=Документы.РасходнаяНакладная.СоздатьДокумент();  
        ндок.Дата=Дата;  
        ндок.номерЗаказНаряда=Номер;  
        ндок.датаЗаказНаряда=Дата;  
        ндок.Заказчик=Заказчик;  
        ндок.Записать();  
    Иначе      
        Выбранный=НеобходимыйМатериал.Выгрузить();  
        текРН=Документы.РасходнаяНакладная.НайтиПоНомеру(Номер,Дата);  
        если текРН <> неопределено тогда
             ТекРН = текРН.ПолучитьОбъект();//Внимательнее надо ПолучитьОбъект() возвращает объект в переменную
             текРН.СтрокаРасходнойНакладной.Загрузить(Выбранный);  
            //текРН[СтрокаРасходнойНакладной].Загрузить(Выбранный);  
        конецесли;
    КонецЕсли;  
КонецПроцедуры  
 

 

Всего записей: 172 | Зарегистр. 02-06-2004 | Отправлено: 11:21 13-02-2009 | Исправлено: RomanBor, 11:23 13-02-2009
kalinakrasnay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RomanBor, вау!!! Спасибо огромное! Работает!!!

Цитата:
//зачем ты постоянно ищеш нашли один раз и используем

поняла, ступила.

Цитата:
 ТекРН = текРН.ПолучитьОбъект();//Внимательнее надо ПолучитьОбъект() возвращает объект в переменную

ах вот в чем был косяк. Когда вы сказали Получить объект, а не присвоила его в переменную...теперь все работает))))
Только:

Цитата:
если текРН <> неопределено тогда  
             ТекРН = текРН.ПолучитьОбъект();//Внимательнее надо ПолучитьОбъект() возвращает объект в переменную  
             текРН.СтрокаРасходнойНакладной.Загрузить(Выбранный);  

ТекРН.СтрокаРасходнойНакладной.Загрузить(Выбранный);
Но это уже мелочь, я увидела...
 
Всем огромное мерси за помощь!
 
п.с. мне еще предстоит мучится с регистром накопления. Если что знаю теперь куда обратиться

Всего записей: 351 | Зарегистр. 04-01-2007 | Отправлено: 12:16 13-02-2009
RomanBor



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kalinakrasnay

Цитата:
Только:  
 
если текРН <> неопределено тогда  
             ТекРН = текРН.ПолучитьОбъект();//Внимательнее надо ПолучитьОбъект() возвращает объект в переменную  
             текРН.СтрокаРасходнойНакладной.Загрузить(Выбранный);    
 
ТекРН.СтрокаРасходнойНакладной.Загрузить(Выбранный);  
Но это уже мелочь, я увидела...  
 

 
Это же не C / C++ , это там чувствительный к регистру
int a = 0;
int A = 0;
Разные переменные
 
здесь даже так можно было
ТеКрН.СтРоКаРаСхОдНоЙНаКлАдНоЙ.ЗаГрУзИтЬ(ВыБрАнНыЙ);
 
и еще сразу старайся писать синтаксически правильно
тоясть пример а=10 неправильно, а = 10 правильно
текРН = Документы.РасходнаяНакладная.НайтиПоНомеру(Номер, Дата); правильно
текРН=Документы.РасходнаяНакладная.НайтиПоНомеру(Номер,Дата); не правильно  

пример твоего кода мной немного подправленного:
Процедура ПриЗаписи(Отказ)  
    Если  новЗН = истина Тогда  
        ндок = Документы.РасходнаяНакладная.СоздатьДокумент();  
        ндок.Дата = Дата;  
        ндок.номерЗаказНаряда = Номер;  
        ндок.датаЗаказНаряда = Дата;  
        ндок.Заказчик = Заказчик;  
        ндок.Записать();  
    Иначе      
        Выбранный = НеобходимыйМатериал.Выгрузить();  
        текРН = Документы.РасходнаяНакладная.НайтиПоНомеру(Номер, Дата);  
        если текРН <> неопределено тогда  
             ТекРН = текРН.ПолучитьОбъект();
             текРН.СтрокаРасходнойНакладной.Загрузить(Выбранный);  
        конецесли;  
    КонецЕсли;  
КонецПроцедуры  
 
 
 
 
Добавлено:
Lenarrr

Цитата:
Привет! У меня такая проблема возникла : Я Скачал платформу 1с 8.1 -8.1.13.41 и скачал хасп на нее ! установил ! все вроде бы работает , но возникает ошибка каждый раз при открытии в конфигураторе помошника(alt+F1) Ошибка : при попытке совместного открытия файла типа темп(временные файлы) в C:\Documents and Settings\Admin\Local Settings\Temp! Все пробовал - даже винду переустановил - та же проблема ! Может это хасп глючит! Не подскажите где найти нормальный хасп?

 
так то с этим несталкивался но  
попробуй изменить переменную среду на темп
пр. мышка на мой комп ->меню "свойства" ->вкладка "Дополнительно" ->кнопка "переменные среды"  
temp и tmp поменяй на например C:\temp передэтим скачало создай папку temp на диске C:
перезагрузись и пробуй, вдруг поможет

Всего записей: 172 | Зарегистр. 02-06-2004 | Отправлено: 13:26 13-02-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1C Программирование и поддержка
ShIvADeSt (03-04-2009 02:03): Продолжение тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10256#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru