Последние сообщения

#1
7.7 / Re: Обсуждение накопленного
Последний ответ от Харлампий Дымба - Сегодня в 18:44
Ещё одна багофича 1С, связанная с функциями УчетПоКоличеству() и УчетПоВалютнойСумме() - флаги учета по "По количеству" и "По сумме" по указанному виду субконто:
КолУчетПоСубконто1...3 = СчетПоКоду("26").УчетПоКоличеству(1...3);// = 1, хотя количественного учета по аналитике сч.26 отродясь не было
ВалУчетПоСубконто1...3 = СчетПоКоду("26").УчетПоВалютнойСумме(1....3);//  = 1, хотя валютного учета по аналитике сч.26 отродясь не было
Это происходит потому, что 1Ска ленится скидывать неиспользуемые флаги при редактировании метаданных (такое много где встречается и приводит к разным багам). Типа если по счету в целом нет количественного учета, то неважно состояние флагов "Учет по количеству" для всех субконто этого счета, поэтому не будем с ними ничего делать и оставим их как были. Пользователю эти флаги видны как неустановленные и недоступны для редактирования, при этом на самом деле флаги установлены. Можно в любой типовой конфе с планом счетом убедиться, что по неколичественным счетам у субконто флаг снят (т.е. "НЕТ"), но при выводе "Описания структуры метаданных" для всех субконто счета значение реквизита "УчетПоКоличеству" будет равно "ЕСТЬ". С валютой аналогично.
Так что правильное использование этих функций - с использованием атрибутов счета "Количественный" и "Валютный":
КолУчетПоСубконто1...3 = ?(Счет.Количественный = 0, 0, Счет.УчетПоКоличеству(1...3));
ВалУчетПоСубконто1....3 = ?(Счет.Валютный = 0, 0, Счет.УчетПоВалютнойСумме(1...3));

Можно было бы назвать это не багом, а особенностью - так как в описании функции именно такое поведение функций и задекларировано: "Функция возвращает значение флага ...".
Но во-первых даже в вылизанной за десятилетия ОСВ по счету в типовой бухии есть именно эта ошибка - использование функции "УчетПоКоличеству" без оглядки на сам счёт. Ошибка незначительная по последствимя - из-за неё выводятся лишние пустые секции в печатной форме, но всё же.
А во-вторых возможно, что и в других местах 1С будет смотреть на флаг по субконто, игнорируя флаг по счету.
#3
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от Евгений - Вчера в 17:31
Тема закрыта.
#4
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от Евгений - Вчера в 17:31
Спасибо Всем за помощь.
Сработал пункт 1. Удалить базу из списка баз, закрыть меню запуска, открыть меню запуска, добавить базу в список баз, проверить.
#5
А есть ALS полный по 1C++
?
#6
FormEx / Re: Таймер.ЗадатьОбработчикВОб...
Последний ответ от Злоп - Вчера в 00:23
Спасибо
#7
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от Харлампий Дымба - Вчера в 00:17
Варианты для поиска решения проблемы:
1. Удалить базу из списка баз, закрыть меню запуска, открыть меню запуска, добавить базу в список баз, проверить.
2. Скопировать BIN с другого рабочего компа, запуститься через него, проверить.
3. Скопировать als с другого рабочего компа проверить.
4. Не класть BIN в Program Files.
5. Права доступа на файлы.
#8
FormEx / Re: Таймер.ЗадатьОбработчикВОб...
Последний ответ от Харлампий Дымба - Вчера в 00:10
Цитата: Злоп от 18 сентября 2026, 02:50что есть "объект", для которого задается обработчик?
Ну я так понимаю, что это может быть контекст формы, для которой задается таймер. Рабочий пример привел здесь
https://forum.dorex.pro/index.php?topic=373

#9
FormEx / Re: формекс + пометка списка з...
Последний ответ от Харлампий Дымба - Вчера в 00:05
Это потому, что ПриНажатииЛевойКнопки <> ПослеНажатииЛевойКнопки. В момент ПриНажатииЛевойКнопки 1Ска ещё не успевает отработать изменение строки списка и установку/снятие пометки. Так что тебе нужно исполнять свою логику а-ля ПослеНажатииЛевойКнопки. Буквально в соседней теме лежит пример код от ADirksa, как по таймеру отсрочить выполнение своего код. Рабочий демонстрационный пример в твоём случае:
Перем Таймер_ОбработкаКликаПоСписку;

Процедура ОбработкаКликаПоСписку() Экспорт
    Таймер_ОбработкаКликаПоСписку.Остановить();
    Таймер_ОбработкаКликаПоСписку.УдалитьОбработчик();
    Таймер_ОбработкаКликаПоСписку = "";
    Сообщить("Состояние ПослеНажатииЛевойКнопки: строка: " + Список.ТекущаяСтрока() + ", пометка: "  + ?(Список.ТекущаяСтрока()=0,0,Список.Пометка(Список.ТекущаяСтрока())));
КонецПроцедуры

Процедура ПриНажатииЛевойКнопки(Сост,КоординатаX,КоординатаY,ФСО)
    //Если координаты Х.Y принадлежат списку, то
    Сообщить("Состояние ПриНажатииЛевойКнопки: строка: " + Список.ТекущаяСтрока() + ", пометка: "  + ?(Список.ТекущаяСтрока()=0,0,Список.Пометка(Список.ТекущаяСтрока())));
    Таймер_ОбработкаКликаПоСписку = СоздатьОбъект("Таймер");
    Таймер_ОбработкаКликаПоСписку.ЗадатьОбработчикВОбъекте(глВзятьКонтекст(Контекст), "ОбработкаКликаПоСписку");
    Таймер_ОбработкаКликаПоСписку.Запустить(30);//миллисекунды сам подбери
    //КонецЕсли;
КонецПроцедуры   

глВзятьКонтекст - из любой типовой.
Со списком с пометками у тебя будет ещё тонкость в том, что клик по строке, а не по квадратику пометки не изменяет пометку. То есть либо учитывать для КоординатыX размер квадратика, либо в своей логики процедуры обработки учитывать, что клик не обязательно меняет состояние пометки строки.

#10
7.7 / Re: Вопрос по работе справки 1...
Последний ответ от cr - 09 октября 2026, 23:34
*.als из папки BIN подтягивается "во все конфигураторы", а *.als из папки базы - только в конфигуратор этой базы.
Твой *.als, который ты не видишь, где лежит?